// 数组

// 有三个成绩
// （1）输出三个成绩
// （2）求三个成绩的和

let score1 = 1;
let score2 = 2;
let score3 = 3;

console.log(score1, score2, score3);


let sum = 0;
sum = score1 + score2 + score3;
console.log(sum);


// 问题：
// 1.多个值定义多个变量，容易造成变量太多不好维护,不易统一管理。
// 2.效率低下（因为现在业务比较简单）

// 数组的定义
let scores = [1, 2, 3];
let sum1 = 0;
for (let i = 0; i < 3; i++) {
	console.log(scores[i]);
	sum1 += scores[i];
}
console.log(sum1);

// 数组的类型
console.log(typeof scores); // object(属性)
// 数组的长度
console.log(scores.length);
// 数组的访问 通过[] 数组有索引（下标） 从0开始
// 数组的最后一位怎么访问？
console.log(scores[scores.length - 1]);
// 修改
scores[0] = 4;
console.log(scores);
// 添加 会添加到数组的最后
scores.push(5); 
// 不推荐
scores[scores.length] = 6;
console.log(scores);
// 判断是否是数组
console.log(Array.isArray(scores));
console.log(Array.isArray(new Object()));
console.log(scores instanceof Array);
/*
	特点：
	1.数组中可以存放任意类型的数据
	2.可以使用new关键字创建数组（因为数组是对象）
	3.使用for of来遍历数组
	注意：
	1.最后一个不要放逗号
	2.

*/

let fun = function(){};
let arr = [1, "str", true, 1.1, null, undefined, new Object(), [1, 2, 3], fun];
console.log(arr);

for (let score of scores ) {
	console.log(score);
}

// 遍历索引
for (let score in scores) {
	console.log(score);
}






// 不推荐
let arr1 = new Array(1, 2, 3);
console.log(arr1);


// 思考：我们为什么学习新技术？
// 1.当前的技术解决不了现有问题
// 2.当前的技术可以实现，但是效率太低

// 补充
// 如果定义数组时使用conste  那么代表数组的引用不能改变 地址（在内存中的位置）不能改变
// 但是数组中的数据是可以改变的
const arr2 = [1, 2, 3];
let arr3 = [4, 5, 6];
// arr2 = arr3;
arr2[1] = 5; 
console.log(arr2);





